package com.demo.utils;

import org.junit.Test;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @author gy
 * @date 2024/4/24
 */
public class BigDecimalUtils {
    /**
     * 整数保留两位小数  100 -> 100.00
     */
    @Test
    public void m1(){
        long startTime = System.currentTimeMillis();
        BigDecimal dividendBigDecimal = new BigDecimal(1000000 *100);
        // 将除数转换为BigDecimal类型
        BigDecimal divisorBigDecimal = new BigDecimal(1000000);
        // 使用BigDecimal进行除法计算，并指定保留两位小数和舍入方式
        BigDecimal resultBigDecimal = dividendBigDecimal.
                divide(divisorBigDecimal, 2, RoundingMode.HALF_UP);
        System.out.println(resultBigDecimal);
        long endTime = System.currentTimeMillis();
        System.out.println("执行耗时["+(endTime - startTime)+"]毫秒");
    }


    /**
     * 计算百分比
     */
    @Test
    public void m2(){
        long startTime = System.currentTimeMillis();

        String result = getPercentTwoDigits2(6,6,1);

        System.out.println("num1和num2的百分比为:" + result );

        long endTime = System.currentTimeMillis();
        System.out.println("执行耗时["+(endTime - startTime)+"]毫秒");
    }

    private String getPercentTwoDigits2(int num1,int num2,int digit) {
        BigDecimal dividendBigDecimal = new BigDecimal(num1 *100);
        // 将除数转换为BigDecimal类型
        BigDecimal divisorBigDecimal = new BigDecimal(num2);
        // 使用BigDecimal进行除法计算，并指定保留两位小数和舍入方式
        BigDecimal resultBigDecimal = dividendBigDecimal.
                divide(divisorBigDecimal, digit, RoundingMode.HALF_UP);
        return resultBigDecimal.toString()+"%";
    }
}
